home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet internetowy / Rozne / HTTrack 3.40-2 / httrack-3.40-2.exe / {app} / src_win / WinHTTrack / WizTab.cpp < prev    next >
C/C++ Source or Header  |  2004-02-14  |  8KB  |  347 lines

  1. // Tab Control Principal
  2.  
  3. #include "stdafx.h"
  4. #include "Shell.h"
  5. #include "WizTab.h"
  6. #include "direct.h"
  7.  
  8. #include "winsvc.h "
  9.  
  10. #include "windows.h"
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include <string.h>
  14.  
  15. #ifdef _DEBUG
  16. #define new DEBUG_NEW
  17. #undef THIS_FILE
  18. static char THIS_FILE[] = __FILE__;
  19. #endif
  20.  
  21. CWizTab* this_CWizTab;
  22. CWizTab* this_intCWizTab;
  23. CWizTab* this_intCWizTab2;
  24.  
  25. // Icone HTTrack
  26. extern HICON httrack_icon;
  27.  
  28. // Instance WinHTTrack
  29. #include "WinHTTrack.h"
  30. extern CWinHTTrackApp* this_app;
  31.  
  32. // Helper
  33. extern LaunchHelp* HtsHelper;
  34. extern CMainTab* maintab;
  35.  
  36. /* Main splitter frame */
  37. #include "DialogContainer.h"
  38. #include "splitter.h"
  39. extern CSplitterFrame* this_CSplitterFrame;
  40.  
  41. /////////////////////////////////////////////////////////////////////////////
  42. // CWizTab
  43.  
  44. IMPLEMENT_DYNAMIC(CWizTab, CPropertySheet)
  45.  
  46. CWizTab::CWizTab(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
  47. :CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
  48. {
  49.   AddControlPages();
  50. }
  51.  
  52. CWizTab::CWizTab(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
  53. :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
  54. {
  55.   AddControlPages();
  56. }
  57.  
  58. CWizTab::CWizTab(LPCTSTR pszCaption, int num, CWnd* pParentWnd, UINT iSelectPage)
  59. :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
  60. {
  61.   is_inProgress=num;
  62.   AddControlPages();
  63. }
  64.  
  65. CWizTab::~CWizTab()
  66. {
  67.   ClearInits();
  68. }
  69.  
  70. void CWizTab::DoInits() {
  71.   m_tab0=NULL;
  72.   m_tab1=NULL;
  73.   m_tab2=NULL;
  74.   m_tab3=NULL;
  75.   m_tabend=NULL;
  76.   m_tabprogress=NULL;
  77.   if (!is_inProgress) {
  78.     m_tab0=this_app->m_tab0;
  79.     m_tab1=this_app->m_tab1;
  80.     m_tab2=this_app->m_tab2;
  81.     m_tab3=this_app->m_tab3;
  82.     m_tabend=this_app->m_tabend;
  83.   } else {
  84.     m_tabprogress=this_app->m_tabprogress;
  85.   }
  86.   // Lecture du profile par dΘfaut
  87.   maintab = new CMainTab("WinHTTrack");
  88.   //if (!is_inProgress)   // sinon buggue
  89.   Read_profile("",0);
  90. }
  91.  
  92. void CWizTab::ClearInits() {
  93.   if (maintab)
  94.     delete maintab;
  95.   maintab=NULL;
  96.   if (!is_inProgress)
  97.     this_intCWizTab=NULL;
  98.   else
  99.     this_intCWizTab2=NULL;
  100. }
  101.  
  102. void CWizTab::AddControlPages()
  103. {
  104.   m_hIcon = httrack_icon;
  105.   m_psh.dwFlags |= PSP_USEHICON;  // utiliser ic⌠ne
  106.   m_psh.dwFlags &= ~PSH_HASHELP;  // pas de bouton help
  107.   m_psh.hIcon = m_hIcon;
  108.   //m_psh.pszIcon = "test";
  109.  
  110.   // objet lui mΩme
  111.   if (!is_inProgress)
  112.     this_intCWizTab=this;
  113.   else
  114.     this_intCWizTab2=this;
  115.  
  116.   if (!is_inProgress)
  117.     this_CWizTab=this;
  118.  
  119.   // pas de "apply"
  120.   this->m_psh.dwFlags|=PSH_NOAPPLYNOW;
  121.  
  122.   DoInits();
  123.  
  124.   // Ajout des Control TAB dans la feuille principale (MainTab)
  125.   if (!is_inProgress) {
  126.     AddPage(m_tab0);
  127.     AddPage(m_tab1);
  128.     AddPage(m_tab2);
  129.     AddPage(m_tab3);
  130.   }
  131.  
  132.   /* uniquement pour calibrer la page, retirΘ lors de initdialog */
  133.   if (is_inProgress)
  134.     AddPage(m_tabprogress);
  135.  
  136.   if (!is_inProgress)
  137.     AddPage(m_tabend);
  138.  
  139.   //SetActivePage(0);
  140.   SetWizardMode(); 
  141. }
  142.  
  143. void CWizTab::FinalInProgress()
  144. {
  145.   if (is_inProgress) {
  146.     /* tout effacer */
  147.     while(GetPageCount()>0)
  148.       RemovePage(0);
  149.     /* page finale */
  150.     SetWizardButtons(0);
  151.     AddPage(m_tabprogress);
  152.     SetActivePage(0);
  153.     
  154.     /* enable ext. entries */
  155.     this_CSplitterFrame->EnableExtEntries(TRUE);
  156.     this_CSplitterFrame->EnableSaveEntries(FALSE);
  157.   }
  158. }
  159.  
  160. void CWizTab::EndInProgress()
  161. {
  162.   if (!is_inProgress) {
  163.     /* unhide */
  164.     this_CSplitterFrame->CheckRestore();
  165.     /* tout effacer */
  166.     while(GetPageCount()>0)
  167.       RemovePage(0);
  168.     
  169.     /* page fin */
  170.     SetWizardButtons(0);
  171.     AddPage(m_tabend);
  172.     SetActivePage(0);
  173.     
  174.     /* disable ext. entries */
  175.     this_CSplitterFrame->EnableExtEntries(FALSE);
  176.     this_CSplitterFrame->EnableSaveEntries(FALSE);
  177.   }
  178. }
  179.  
  180. BEGIN_MESSAGE_MAP(CWizTab, CPropertySheet)
  181. //{{AFX_MSG_MAP(CWizTab)
  182. ON_WM_HELPINFO()
  183.     //}}AFX_MSG_MAP
  184. ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  185. ON_COMMAND(ID_HELP,OnHelpInfo2)
  186. ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  187. //ON_BN_CLICKED(IDOK, OnOK)
  188. //ON_BN_CLICKED(IDCANCEL, OnCancel)
  189. ON_COMMAND(ID_APPLY_NOW,OnApplyNow)
  190. ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  191. END_MESSAGE_MAP()
  192.  
  193. /////////////////////////////////////////////////////////////////////////////
  194. // CWizTab message handlers
  195.  
  196. BOOL CWizTab::OnInitDialog()
  197. {
  198.   // IDM_ABOUTBOX must be in the system command range.
  199.   //ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  200.   //ASSERT(IDM_ABOUTBOX < 0xF000);
  201.   
  202.   SetIcon(m_hIcon, TRUE);
  203.   SetIcon(m_hIcon, FALSE);
  204.   EnableToolTips(true);     // TOOL TIPS
  205.  
  206. /*
  207.   CMenu* pSysMenu = GetSystemMenu(FALSE);
  208.   if (pSysMenu != NULL)
  209.   {
  210.     CString strAboutMenu;
  211.     strAboutMenu.LoadString(IDS_ABOUTBOX);
  212.     if (!strAboutMenu.IsEmpty())
  213.     {
  214.       pSysMenu->AppendMenu(MF_SEPARATOR);
  215.       pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  216.     }
  217.   }
  218. */  
  219.   // Chargement des prΘfΘrences
  220.   if (!is_inProgress)
  221.     LoadPrefs();
  222.   
  223.   // Appliquer prΘfΘrences
  224.   Apply();
  225.   
  226.   int r = CPropertySheet::OnInitDialog();
  227.   //xx RemovePage(m_tabprogress);
  228.   //xx RemovePage(m_tabend);
  229.   SetWizardButtons(PSWIZB_BACK|PSWIZB_NEXT);
  230.   SetWindowPos(&wndTop,0,0,0,0,SWP_NOZORDER|SWP_NOSIZE|SWP_NOOWNERZORDER);
  231.   SetActivePage(0);
  232.   WHTT_LOCATION("FirstInfo");
  233.  
  234.   return r;
  235. }
  236.  
  237. // L'utilisateur a appuyΘ sur "Apply"
  238. void CWizTab::OnApplyNow()
  239. {
  240.   EnableWindow(false);
  241.   Default();
  242.   ApplyAndSave();
  243.   EnableWindow(true);
  244. }
  245.  
  246. // Sauver et appliquer les prΘfΘrences
  247. void CWizTab::ApplyAndSave() {
  248.   CWaitCursor wait;      // Afficher curseur sablier
  249.   bool err=false;  // Erreur lors de l'Θcriture des paramΦtres
  250.   
  251.   // Appliquer les prΘfΘrences
  252.   Apply();
  253.   
  254.   // Sauver prΘfΘrences
  255.   CWinApp* pApp = AfxGetApp();
  256.  
  257.   if (err)
  258.     AfxMessageBox(LANG(LANG_DIAL2));
  259. }
  260.  
  261. // Appliquer prΘfΘrences
  262. void CWizTab::Apply() {
  263.   // Appliquer prΘfΘrences
  264. }
  265.  
  266. // Chargement des prΘfΘrences
  267. void CWizTab::LoadPrefs() {
  268.   CWinApp* pApp = AfxGetApp();
  269.   //n = pApp->GetProfileInt("Driver", "DriverId",0);   // No du driver
  270. }
  271.  
  272. // Appel aide
  273. void CWizTab::OnHelpInfo2() {
  274.   (void)OnHelpInfo(NULL);
  275. }
  276.  
  277. BOOL CWizTab::OnHelpInfo(HELPINFO* dummy) 
  278. {
  279.   //return CDialog::OnHelpInfo(pHelpInfo);
  280.   //AfxGetApp()->WinHelp(0,HELP_FINDER);    // Index du fichier Hlp
  281.   //LaunchHelp(pHelpInfo);
  282.  
  283.   /*if (this->GetActivePage() == m_tab1)
  284.     HtsHelper->Help("xxc");
  285.   else*/
  286.     HtsHelper->Help();
  287.   return true;
  288. }
  289.  
  290.  
  291. /*
  292. // Capturer OK et Cancel
  293. void CWizTab::OnOK( ) {
  294.   // Sauver et appliquer prΘfΘrences
  295.   ApplyAndSave();
  296. }
  297. void CWizTab::OnCancel( ) {
  298.   // Recharger prΘfΘrences
  299.   LoadPrefs();
  300. }
  301. */
  302.  
  303.  
  304. // ------------------------------------------------------------
  305. // TOOL TIPS
  306. //
  307. // ajouter dans le .cpp:
  308. // remplacer les deux <nom classe>:: par le nom de la classe::
  309. // dans la message map, ajouter
  310. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  311. // dans initdialog ajouter
  312. // EnableToolTips(true);     // TOOL TIPS
  313. //
  314. // ajouter dans le .h:
  315. // char* GetTip(int id);
  316. // et en generated message map
  317. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  318. char* CWizTab::GetTip(int ID)
  319. {
  320.   /*switch(ID) {
  321.   }*/
  322.   return "";
  323. }
  324. BOOL CWizTab::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  325. {
  326.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  327.   UINT nID =pNMHDR->idFrom;
  328.   if (pTTT->uFlags & TTF_IDISHWND)
  329.   {
  330.     // idFrom is actually the HWND of the tool
  331.     nID = ::GetDlgCtrlID((HWND)nID);
  332.     if(nID)
  333.     {
  334.       char* st=GetTip(nID);
  335.       if (st != "") {
  336.         pTTT->lpszText = st;
  337.         pTTT->hinst = AfxGetResourceHandle();
  338.         return(TRUE);
  339.       }
  340.     }
  341.   }
  342.   return(FALSE);
  343. }
  344. // TOOL TIPS
  345. // ------------------------------------------------------------
  346.  
  347.